﻿using System.Collections.Generic;

namespace Flare.DB.Entity.Contract
{
    struct contract_list
    {
        public int? id_contract { get; set; }
        public string contract_number { get; set; }
        public int? id_service { get; set; }
        public int? id_provider { get; set; }
        public int? id_department { get; set; }
        public string contract_description { get; set; }
        public bool isclosed { get; set; }

        public IEnumerable<string> Validate()
        {
            if (id_contract == null)
                yield return "Поле [ID CONTRACT] должно иметь значение";

            if (id_service == null)
                yield return "Поле [Вид услуги] должно иметь значение";

            if (id_provider == null)
                yield return "Поле [Поставщик] должно иметь значение";

            if (id_department == null)
                yield return "Поле [Отдел] должно иметь значение";

            if (string.IsNullOrEmpty(contract_number))
                yield return "Поле [Номер договора] должно иметь значение";

            if (contract_number.Length > 50)
                yield return "Содержимое поля [Номер договора] превышает 50 символов";
        }
    }

    struct view_contract_list
    {
        public int id_contract { get; set; }
        public string contract_number { get; set; }
        public int id_service { get; set; }
        public string service { get; set; }
        public int id_provider { get; set; }
        public string provider { get; set; }
        public string department { get; set; }
        public int id_department { get; set; }
        public string contract_description { get; set; }
        public bool isclosed { get; set; }
    }

    struct contract_list_full
    {
        public int id_contract { get; set; }
        public int id_service { get; set; }
        public int id_provider { get; set; }
        public int id_department { get; set; }
        public string contract_name { get; set; }
        public string contract_number { get; set; }
        public string contract_region { get; set; }
        public string contract_bank_contact { get; set; }
        public string contract_bank_contact_phone { get; set; }
        public string contract_provider { get; set; }
        public string contract_description { get; set; }
        public bool isclosed { get; set; }
        public List<contract_providerphone> contract_provider_phones { get; set; }
    }

    struct contract_providerphone
    {
        public int id_providerphone { get; set; }
        public int id_provider { get; set; }
        public string providerphone { get; set; }
        public string description { get; set; }
    }
    
    struct contract_provider
    {
        public int id_provider { get; set; }
        public string provider { get; set; }
        public string provider_address { get; set; }
        public string default_contract_number { get; set; }

        public IEnumerable<string> Validate()
        {
            if (string.IsNullOrEmpty(provider))
                yield return "Поле [Наименование поставщика услуги] должно иметь значение";

            if (string.IsNullOrEmpty(provider_address))
                yield return "Поле [Адрес поставщика услуги] должно иметь значение";

            if (provider.Length > 50)
                yield return "Содержимое поля [Наименование поставщика услуги] превышает 50 символов";
        }
    }

    struct contract_service
    {
        public int id_service { get; set; }
        public string service { get; set; }

        public IEnumerable<string> Validate()
        {
            if (string.IsNullOrEmpty(service))
                yield return "Поле [Вид услуги] должно иметь значение";

            if (service.Length > 50)
                yield return "Содержимое поля [Вид услуги] превышает 50 символов";
        }
    }
}
